This invention relates to the providing of communication services using a distributed call system.
A well known problem in the art of telephony is that the systems which provide telephone service, e.g., central offices (CO), private branch exchange (PBX), and internet telephony servers, are discrete islands of functionality, and each such island has its own particular syntax and semantics. In addition, each of the larger islands has its own subislands which likewise employ their own respective syntaxes and semantics. For example, a CO employs a) signaling, system 7 (SS7), b) integrated services digital network primary or basic rate (ISDN-PRI/BRI), c) T1 wink/start, d) analog loop start, and e) analog ground start; while internet telephony has a) H.323 and b) session invitation protocol (SIP). The use of the different syntaxes and semantics makes it difficult to easily interconnect the various islands, and it is virtually impossible to provide features that work together seamlessly across the various islands. In addition, there is a need to integrate with the already existing islands of communication other forms of communication, such as quasi-synchronous communication, which include, for example, forms of instantaneous messaging such as a) paging or b) buddy lists for providing private chat rooms.
We have recognized that seamless telephony can be provided across the various islands of telephony functionality by supplying telephone service using a distributed architecture that employs a collection of resources each of which exposes a hierarchical namespace. The architecture of the invention includes two fundamental resource types, namely, i) the device server and ii) the call coordinator, which are interconnected by a network employing a common protocol, e.g., transmission control protocol/internet protocol (TCP/IP). Each resource can participate in more than one call, i.e., each resource acts as a distributed file system that can arbitrate various requests presented to it. The interaction between the various resources that are available, which are substantially independent, follows xe2x80x9cclient-serverxe2x80x9d architecture principles to implement end-to-end communication.
More specifically, typical device servers represent physical/logical telephone devices, which include a) end-point device servers and b) gateway device servers. End-point device servers 1) represent controls for communication, such as keypads, indicator lamps, and displays, and 2) perform media rendering, e.g., voice digitization, transport, and reconstruction. End-point device servers may include phone device servers. Gateway device servers have two xe2x80x9csidesxe2x80x9d. One side is implemented to appear to a call coordinator as if it were a device server, and the other side has an interface adapted to interwork with a preexisting island of telephone service. Gateway device servers may include line device servers. In the term xe2x80x9cdevice serverxe2x80x9d, xe2x80x9cserverxe2x80x9d is used in the conventional manner of the xe2x80x9cclient-serverxe2x80x9d architecture, where the server serves request from the clients and does not take action unless it is in response to a client request.
A call coordinator functions in the role of the xe2x80x9cclientxe2x80x9d of the conventional xe2x80x9cclient-serverxe2x80x9d architecture, e.g., it initiates requests for services to the various device servers. Since the call coordinator is the client, it is able to request service from various ones of the servers, i.e., device servers or gateway servers, as is appropriate for the service being provided on a particular call and consistent with stored rules or registrations. The device servers are unaware of communication state, which is the interaction among multiple device servers. Instead, communication state is maintained by the call coordinator, which exposes the communication state as a hierarchical namespace. A hierarchical namespace is analagous to a computer disk-based hierachical file system except that what appears in the nodes and leaves of the hierarchy may not be actual directories and files but instead may be other data structures in memory which are presented in the form of a file system. The call coordinator treats the processing of a call as a sequence of steps each of which can be implemented by a small piece of computer executable code called a xe2x80x9cfeature appletxe2x80x9d.
Thus, by viewing the various devices as clients and the call coordinator as the server, the invention implements the opposite of conventional systems.